/**
 * 
 */
package com.cuc.platform.core.componet.security.service;

import java.util.List;

import org.springframework.dao.DataAccessException;

import com.cuc.platform.core.componet.security.domain.SecurityAuthority;
import com.cuc.platform.core.service.ServiceException;

/**
 * @author peepul
 *	
 * 权限服务业务接口
 */
public interface SecurityAuthorityService {

	/**
	 * 取所有权限对象
	 * 
	 * @return SecurityAuthority List
	 */
	public List<SecurityAuthority> getAllAuths();

	/**
	 * 根据主标识获取指定的SecurityAuthority对象
	 * 
	 * @param  id
	 * @return SecurityAuthority
	 * @throws Exception
	 */
	public SecurityAuthority getAuthById(Long id);

	/**
	 * 获取带资源的Auth对象
	 * 
	 * @return SecurityAuthority
	 */
	public SecurityAuthority getAuthWithRescs(Long id);
	
	/**
	 * 根据角色主键获取权限对象集合
	 * 
	 * @param roleId
	 * @return
	 */
	public List<SecurityAuthority> getAuthsByRoleId(Long roleId);
	
	/**
	 * 新增权限对象
	 * 
	 * @param auth
	 * @throws DataAccessException
	 */
	public void insertAuth(SecurityAuthority auth) throws ServiceException;
	
	/**
	 * 更新权限对象
	 * 
	 * @param auth
	 * @throws DataAccessException
	 */
	public void updateAuth(SecurityAuthority auth) throws ServiceException;
	
	/**
	 * 根据id删除auth对象
	 * 
	 * 注：删除成功返回值为1，如没找到要删除的数据返回0，如果删除出错，则产生异常
	 * @param id
	 */
	public void delAuth(Long id) throws ServiceException;
	
	/**
	 * 根据权限id，查找所有的资源数据，其中资源已经和权限有关联的，权限对象id属性不为空，否则为空。
	 * 
	 * @param authId
	 * @return List<SecurityAuthority>
	 */
	public List<SecurityAuthority> findRescswithAuths(Long authId);
	
	/**
	 * 保存权限与资源的关联关系。往ss_auth_resc中保存关联数据
	 * 
	 * @param auth_id
	 * @param resc_ids 
	 */
	public void saveAuthRescUnion(String auth_id, String[] resc_ids) throws ServiceException;
}
